home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / fido / fz104.lha / rexx / Make4D.rexx < prev    next >
OS/2 REXX Batch file  |  1991-11-19  |  3KB  |  132 lines

  1. /*
  2.  *
  3.  *
  4.  *    Make4D.rexx
  5.  *      ¯¯¯¯¯¯¯¯¯¯¯
  6.  *
  7.  *    Creates a four dimensional traplist.library compatible
  8.  *    nodelist from the two dimensional german pointlist POINTS24.
  9.  *
  10.  *    Written 29-Dec-1990 by Peer Hasselmeyer (2:247/4 @ FidoNet)
  11.  *    Date of this version: 18-Nov-1991, 23:35:05
  12.  *
  13.  *
  14.  *
  15.  *    The incoming POINTS24.### file consists of entries for each
  16.  *    boss node like:
  17.  *       Host,<fakenet>,<boss net/node>,<place>,<sysop>,<tel>,<baud>,<flags>
  18.  *
  19.  *    Each point occupies one line that looks like:
  20.  *       ,<point-#>,<net/node.point>,<place>,<sysop>,<tel>,<baud>,<flags>
  21.  *
  22.  *
  23.  *    The resulting PointList.### looks like:
  24.  *       Host,<net>,->
  25.  *       ,<node>,->
  26.  *
  27.  *    and many point entries:
  28.  *       Point,<point-#>,<net/node.point>,<place>,<sysop>,<tel>,<baud>,<flags>
  29.  *
  30.  *
  31.  */
  32.  
  33. /*-----------------------------------------------------------------------*/
  34.  
  35. nldir    = "dh1:Nodelist/"    /* Nodelist-Directory, must end with "/" or ":" */
  36. name2d    = "POINTS24."        /* name of 2d list */
  37. name4d    = "PointList."        /* name of 4d list */
  38.  
  39. /*-----------------------------------------------------------------------*/
  40.  
  41. if ~show(l, "rexxsupport.library") then
  42.     if ~addlib("rexxsupport.library", 0, -30, 0) then do
  43.     say "Couldn't open rexxsupport.library !"    /* open support.lib */
  44.     exit 20
  45.     end
  46.  
  47. dfiles = showdir(nldir, f)
  48.  
  49. if dfiles = "" then do
  50.     say "No" name2d || "* file found !"        /* no files in NL-Dir */
  51.     exit
  52.     end
  53.  
  54. ext = ""
  55. do until dfiles = ""
  56.     parse var dfiles cfile dfiles
  57.     if upper(left(cfile, length(name2d))) = upper(name2d) then do
  58.     ext = right(cfile, 3)
  59.     dfiles = ""
  60.     end
  61.     end
  62.  
  63. if ext = "" then do
  64.     say "No" name2d || "* file found !"        /* no 2d-file found */
  65.     exit
  66.     end
  67.  
  68. if ~open(infile, nldir || name2d || ext, r) then do
  69.     say 'Couldn''t open 2d-list "' || name2d || ext || '" !'
  70.     exit 20
  71.     end
  72.  
  73. if ~open(outfile, nldir || name4d || ext, w) then do
  74.     say 'Couldn''t open 4d-list "' || name4d || ext || '" !'
  75.     exit 20
  76.     end
  77.  
  78. say 'Creating 4d-list "' || name4d || ext || '" from "' || name2d || ext || '" ...'
  79.  
  80. net = 0
  81. node = 0
  82.  
  83. call writeln outfile, readln(infile)        /* copy first line */
  84.  
  85. do while ~eof(infile)
  86.     inline = readln(infile)
  87.     if length(inline) < 3 then iterate
  88.     if left(inline,1) = ";" then iterate    /* ignore comments */
  89.     parse var inline keyword "," rest
  90.     upper keyword
  91.     select
  92.     when keyword = "HOST" then do
  93.         parse var rest nnet "," rest
  94.         if nnet = 24000 then iterate    /* ignore host24000 */
  95.         parse var rest nnet "/" node "," .
  96.         if index(nnet,":") > 0 then parse var nnet . ":" nnet
  97.         if nnet ~= net then do
  98.         net = nnet
  99.         call writeln outfile, "Host," || net || ",->" || "0d"x
  100.         end
  101.         call writeln outfile, "," || node || ",->" || "0d"x
  102.         iterate
  103.         end
  104.     when keyword = "HUB" then do
  105.         parse var rest . "," nnet "/" node "," .
  106.         if nnet ~= net then do
  107.         net = nnet
  108.         call writeln outfile, "Host," || net || ",->" || "0d"x
  109.         end
  110.         call writeln outfile, "," || node || ",->" || "0d"x
  111.         node = nnode
  112.         end
  113.     when keyword = "ZONE" then do
  114.         parse var rest zone "," .
  115.         call writeln outfile, "Zone," || zone || ",->" || "0d"x
  116.         iterate
  117.         end
  118.     when keyword = "REGION" then do
  119.         parse var rest zone "," .
  120.         call writeln outfile, "Region," || zone || ",->" || "0d"x
  121.         iterate
  122.         end
  123.     otherwise nop
  124.     end
  125.     call writeln outfile, "Point," || rest
  126.     end
  127.  
  128. call close outfile
  129. call close infile
  130. say "All right !"
  131.  
  132.